<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 浅复制: 两个变量(数据)公共同一片内存空间 
    // var arr = [1,2,3];
    // var brr = brr;
    // console.log(arr === brr);

    // 深复制: 得到一个与原数组元素相同的新数组  (有些时候操作数据可能会影响原数组,如果不想影响原数组 => 可以复制一个新的)
    // a. 浅拷贝  
    // b. 深拷贝

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

    // 浅拷贝
    // 1. 手动创建新数组, 遍历原数组,将原数组中的每个元素放到新数组中
    // var brr = [];
    // for(var i=0;i<arr.length;i++){
    //     var item = arr[i]; // 1,2,3,4,5,6,7,8,9
    //     brr.push(item);
    // }
    // console.log(arr,brr);
    // console.log(arr === brr);

    // 2. 使用数组的方法 slice() concat()  map()
    // var brr = arr.slice();
    // var brr = arr.concat();

    // var brr = arr.map(function(item){
    //     return item;
    // })
    // console.log(arr,brr);
    // console.log(arr === brr);


    // 浅拷贝 => 只拷贝一层, 如果存在二维 或 多维数组 还是引用同一片内存空间
    // var arr = [1, 2, 3, [4, 5, 6], [7, 8, 9]];

    // var brr = [];
    // for (var i = 0; i < arr.length; i++) {
    //     var item = arr[i]; // 1,2,3, [4, 5, 6], [7, 8, 9]
    //     brr.push(item);
    // }
    // console.log(arr, brr);
    // console.log(arr === brr);

    // console.log(arr[3], brr[3]);
    // console.log(arr[3] === brr[3]);


    // 深拷贝 => 有几层就拷贝几层 (递归) 
    // function deepCopy(list){ // [4,5,6]
    //     var brr = [];
    //     for (var i = 0; i < list.length; i++) {
    //         var item = arr[i]; // 1,2,3, [4, 5, 6], [7, 8, 9]
    //         if(Array.isArray(item)){ // [4, 5, 6]
    //             var newArr = deepCopy(item); // deepCopy([4,5,6]); => 得到拷贝后的新数组
    //             brr.push(newArr);
    //         }else{
    //             brr.push(item); // 1 2 3 
    //         }
    //     }
    //     return brr;
    // }

    // var arr = [1, 2, 3, [4, 5, 6], [7, 8, 9]];
    // var brr = deepCopy(arr);
    // console.log(arr, brr);
    // console.log(arr === brr);

    // console.log(arr[3], brr[3]);
    // console.log(arr[3] === brr[3]);





    var brr = [];
    for (var i = 0; i < list.length; i++) {
        var item = arr[i]; // 1,2,3, [4, 5, 6], [7, 8, 9]
        if(Array.isArray(item)){ // [4, 5, 6]
            var brr1 = [];
            for(var j=0;j<item.length;j++){
                var item1 = item[j];
                brr1.push(item1);
            }
            brr.push(brr1);

        }else{
            brr.push(item); // 1 2 3 
        }
    }






</script>

</html>